_STACK SEGMENT STACK            ;定义堆栈段
    DW   64 DUP (?)             
_STACK ENDS                     

DATA SEGMENT
        STR1  DB  'GOOD AFTERNOON$'
DATA ENDS

CODE    SEGMENT                 ;定义代码段
ASSUME CS:CODE,SS:_STACK,DS:DATA

START:  MOV  AX,_STACK
        MOV  SS,AX              ;初始化ds,ss,ds
        MOV  AX,DATA
        MOV  DS,AX

        MOV  CX,0EH             ;设置循环次数为字符串长度
        MOV  DI,OFFSET STR1     ;取字符串首地址
A2:     MOV  AH,02H             ;设置单个字符输出
	MOV  DX,[DI]		;传送字符
        INT  21H                ;输出一个字符
        INC  DI                 ;修改地址指针，使其指向下一个字符
        PUSH CX                 ;把cx压入堆栈
        MOV CX,0FFFFH           ;设置延时
A3:     LOOP A3                 ;延时函数
        POP  CX                 ;弹出cx
        DEC  CX                 ;cx-1
        JNZ  A2                 ;未完则继续循环
A1:     JMP  A1

CODE   ENDS
    END     START
